Texture-mapped 3D graphics models ordinarily consist of three parts: a geometric mesh component, texture render data, and texture co-ordinate data.
Typically a geometric mesh component comprises data defining the geometry and connectivity of a plurality of triangles or other polygons which together define a wire mesh surface. Texture render data is typically represented by a 2 dimensional image and texture co-ordinate data comprises set of pairs of uv co-ordinates which define a mapping between vertices on the geometric mesh to the 2D image pixel co-ordinate space. The mapping defined by the texture co-ordinate data enables portions of the 2D image defined by the texture render data to be projected onto individual triangles in the mesh. Normally uv texture co-ordinates are normalized in the range 0.0-1.0, covering the image where U defines left-right relative location on the image, and V defines the vertical y location on the image. Therefore uv values (0.5, 0.5) specify the center of the image. uv texture co-ordinates are usually specified in single precision 32-bit floating point representation.
A triangle mesh representation of a complex, three-dimensional object requires a large volume of data. However, the communication lines through which such data may be transferred over the Internet or other networks typically have a limited average rate of data transfer, commonly referred to as bandwidth. Therefore, it is important to compress data objects as best possible before transfer. Similar issues arise with the storage of data representing complex texture rendered surfaces. The better the compression method which is used, the more data can be transferred in a given amount of time or the greater amount of data which can be stored for a given resource.
There are well-known techniques for compressing 2D image data such as is used to represent texture data. Techniques include run-length encoding and color quantization, such as are used in JPEG, and PNG image standards.
Similarly there are known 3D polygon mesh compression techniques such as those disclosed in “Highly Compressed Tessellation (PRC-HCT)” in ISO24517-1:2008 PDF/E SC2N570-PRC-WD.pdf (21 Jul. 2009 Edition) available for download from http://pdf.editme.com/PDFE which is hereby incorporated by reference.
Having reduced the size of a data set for a triangular mesh using the PRC-HCT approach, the processed data can then be further compressed using conventional data compression algorithms such as the Deflate algorithm in zLib written by Jean-Loup Gailly and Mark Adler which is hereby incorporated by reference.
Greater levels of compression of can be achieved using lossy compression techniques which sacrifice some of the accuracy of the representation of a wire mesh by for example truncation or quantization of the vectors representing a surface to increase the amount of repetition of data and hence increase the susceptibility of data to compression.
Although, data compression techniques exist, further improvement is desirable, either by obtaining greater compression rates or by reducing the appearance of errors in data compressed to a certain file size.